package com.dukun.mybatis.handler;

import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * 自定义类型转换器
 *
 * author：dukun
 * date：2021/10/26
 */
// 指定映射到JDBC的类型，这个是必须指定的，不然MyBatis不知道应该映射到那个类型
@MappedJdbcTypes(JdbcType.VARCHAR)
// 指定映射的java类型，出了在这里指定，还要两种指定方式，第一种：在自定义类型转换器里面使用泛型，第二种：在配置文件添加typeHandler的时候添加javaType
@MappedTypes(String.class)
public class ExampleTypeHandler extends BaseTypeHandler<String> {
    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException {
        preparedStatement.setString(i, s);
    }

    @Override
    public String getNullableResult(ResultSet resultSet, String s) throws SQLException {
        return null;
    }

    @Override
    public String getNullableResult(ResultSet resultSet, int i) throws SQLException {
        return null;
    }

    @Override
    public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        return null;
    }
}
